using System;
using Csla;
using Csla.Data;
using Csla.Server;
using Utpl.Syllabus.Framework.Csla.Base;
using DataPortal = Csla.DataPortal;

namespace Utpl.Syllabus.Reconocimiento.BL
{
    /// <summary>
    /// Estereotipo: ReadOnlyList
    /// Reponsabilidad: Obtener una lista de los programas academicos del sistema anterior
    /// Autor: Luis Cuenca Macas - Enovatraining. Cia. Ltda.
    /// Fecha: 12/12/2012 12:12:12 AM
    /// </summary>
    [Serializable]
    [ObjectFactory("Object=PlanEstudioList;Assembly=Utpl.Syllabus.Reconocimiento.BL")]
    public class PlanEstudioList : SyReadOnlyRootListBase<PlanEstudioList, PlanEstudioInfo>
    {
        #region Factory Methods

        /// <summary>
        /// Obtiene todos los niveles academicos
        /// </summary>
        /// <returns></returns>
        public static PlanEstudioList Get(PlanEstudioCriteria criterio)
        {
            return DataPortal.Fetch<PlanEstudioList>(criterio);
        }

        private PlanEstudioList()
        { /* require use of factory methods */ }

        #endregion
    }

    /// <summary>
    /// Estereotipo: ReadOnlyChild
    /// Reponsabilidad: Nivel academico
    /// Autor: Luis Cuenca Macas - Enovatraining. Cia. Ltda.
    /// Fecha: 12/12/2012 12:12:12 AM
    /// </summary>
    [Serializable]
    [ObjectFactory("Object=PlanEstudioInfo;Assembly=Utpl.Syllabus.Reconocimiento.BL")]
    public class PlanEstudioInfo : SyReadOnlyChildBase<PlanEstudioInfo>
    {
        #region Business Methods
        
        #region < PROPIEDADES >
   
        /// <summary>
        /// Codigo del Programa academico
        /// </summary>
        public string Codigo { get; internal set; }
        
        /// <summary>
        /// Nombre del Programa academico
        /// </summary>
        public string Nombre { get; internal set; }

        /// <summary>
        /// Descripcion del Programa academico
        /// </summary>
        public string Descripcion { get; internal set; }

        /// <summary>
        /// Descripcion del nivel academico
        /// </summary>
        public string NivelAcademico { get; internal set; }

        /// <summary>
        /// Descripcion de Modalidad
        /// </summary>
        public string Modalidad { get; internal set; }

        /// <summary>
        /// Identificacion del Estudiante
        /// </summary>
        public string TipoAprobacion { get; internal set; }
        #endregion

        #region < LISTAS >

        
    
        #endregion

        #endregion

        #region Factory Methods

        internal static PlanEstudioInfo GetPlanEstudioInfo(SafeDataReader childData)
        {
            return DataPortal.FetchChild<PlanEstudioInfo>(childData);
        }

        /// <summary>
        /// Obtiene un nivel academico por su GUID
        /// </summary>
        /// <param name="guid"></param>
        /// <returns></returns>
        public static PlanEstudioInfo Get(Guid guid)
        {
            return DataPortal.Fetch<PlanEstudioInfo>(new SingleCriteria<PlanEstudioInfo, Guid>(guid));
        }

        private PlanEstudioInfo()
        { /* require use of factory methods */ }

        #endregion
    }
}